草庐IT

c++ - Visual Studio 和 Boost::Test

全部标签

c++ - 为什么序列迭代在 C 宏中有效?

在写C宏的时候,有一个技巧叫做“序列迭代”。看起来如下所示:#defineCAT(a,...)PRIMITIVE_CAT(a,__VA_ARGS__)#definePRIMITIVE_CAT(a,...)a##__VA_ARGS__#defineFUNCTION(name)voidname();#defineFUNCTION_TABLE(seq)CAT(FUNCTION_TABLE_1seq,_END)#defineFUNCTION_TABLE_1(x)FUNCTION(x)FUNCTION_TABLE_2#defineFUNCTION_TABLE_2(x)FUNCTION(x)FUN

c++ - 使用 Boost::Spirit 解析前置条件和递归

我正在尝试使用Boost::Spirit解析PDDL文件,但在将前提条件解析为结构时遇到了一些问题。我很难理解关于如何将条件放入我的结构和递归的Boost手册。我在下面给出了一段代码,应该可以很好地说明问题。必须解析如下所示的字符串::precondition(and(at-pos?r?pos)(not(has-pos?m?pos)))到目前为止,我的代码看起来像这样,但我几乎可以肯定我不了解at_c是如何工作的,因为我还没有使用过Boost::Phoenix。predi_param='?'>>name_type;predi='('>>name_type>>+predi_param>>

c++ - 带有 ftime 函数的 Visual Studio 2015/2017 年 2038 错误

我正在将一些代码从vc120迁移到vc140,但我遇到了ftime64问题。该问题类似于VisualStudiodevcommunity中提到的问题其中ftime64似乎有一个year-2038bug在2015/2017年,但2013年没有。下面是一些示例代码:#include"stdafx.h"#includeintmain(){__timeb64testTime64;_ftime64(&testTime64);printf("%lld\n",testTime64.time);return0;}对于2038/01/1903:14:07UTC之后的日期,时间似乎绕过了32位边界。要进行

c++ - 如何告诉 C++ 根据索引指示符放弃 vector 中的某些元素

我正在使用RCPP来加速我项目中的R代码。现在我正在做的是使用Armadillo包将我的R代码转换为C++。我发现我经常用C++编写多行来替换R中的一行...这是我的问题:我有一个vector存储数据:数据。我还有一个矩阵存储我需要访问的元素的索引。请允许我先用R说明我的场景:>Data[1]45678和>index[,1][,2][,3][1,]123[2,]100[3,]202对于“索引”矩阵的每一行,我想从数据中获取相应的元素。在R中,我只需要这样编码:>Data[index[1,]][1]456>Data[index[2,]][1]4>Data[index[3,]][1]55即

c++ - 仅使用 get 或 set 的原始类型的线程安全威胁是否被夸大了?

在过去的一周里,我在工作中一直在争论一个系统,在这个系统上,Cortex-A9上的double是从多个线程获取和设置的,没有线程安全的提示。它似乎工作正常,经过一些测试后,我无法让我的桌面在使用__int128的简单测试中失败。读取错误值的几率是否非零?如果可能性很大而我没有做对?任何在现代x86_64机器上反复失败的示例代码都很棒。但仅对基本类型使用get/set。 最佳答案 尝试运行这个:#include#include#includestd::arraysharedArray;voidtaskOne(){while(true)

C++ Boost 1.66 使用 Beast http 请求解析器解析字符串

我没有在我的项目中使用beasthttp服务器,但我正在寻找一种解决方案来在我的程序中以std::string的形式解析http请求,是否可以使用boost/beast/http/parser.hpp在这种情况下,如果是的话,如果你在代码中给出一个例子,那就太好了。非常感谢 最佳答案 是的,这是可能的:std::strings="POST/cgi/message.phpHTTP/1.1\r\n""Content-Length:5\r\n""\r\n""abcde";error_codeec;request_parserp;p.put

c++ - 使用 Boost Beast 通过代理发出同步 http 请求时出现问题

我修改了http_sync示例以通过代理连接,我用wireshark进行了测试,问题是在我发送http连接请求后,代理返回代码200OK,我的程序无法读取,它在http::read上等待了大约1分钟,然后服务器断开了我的连接。我试过解决这个问题,只是不读取响应,但是当我尝试进行ssl握手时,我得到一个错误:未知协议(protocol)(据wireshark显示,我的ssl握手发送一个客户端问候,然后我收到完整的服务器问候,但我的程序同时发送了一个FIN并给了我错误,我认为这是因为他阅读了200OK而不是服务器的回答并且感到困惑)。所以我想我的问题是,有没有办法解决这个问题?我不明白为什

c++ - Boost beast::websocket 回调函数

我正在试验Boostbeast::websocketwebsocket_client_async.cpp例如,结合websocket_server_async.cpp.正如给定的那样,客户端示例只是建立一个连接,向服务器发送一个字符串(它只是回显),打印回复,关闭并存在。我正在尝试修改客户端以使session保持事件状态,以便我可以重复发送/接收字符串。因此,虽然示例代码的on_handshake函数会立即通过ws_.async_write(...)发送字符串,但我将其分离到它自己的write(...)函数。这是我修改过的session类:usingtcp=boost::asio::i

c++ - 如何使用 boost-range 在函数中封装自定义迭代器

最近我使用boost-range来创建满足特定条件的元素的范围。在所有情况下,我一直使用相同类型的过滤范围,因此我试图将此行为封装在外部函数中。这就是我的问题开始的地方。考虑以下示例。#include#include#includeautomyFilter=[](conststd::vector&v,intr){returnv|boost::adaptors::filtered([&r](autov){returnv%r==0;});};intmain(intargc,constchar*argv[]){usingnamespaceboost::adaptors;std::vector

C++ boost::multi_array 索引太大

我正在使用二维boost::multi_array来存储自定义结构的对象。问题是我有大量的这些对象,所以我需要的数组索引超出了整数的范围。是否有可能将long用作多数组的索引,或者您对如何存储这么大的数据集并仍然保持以适当的速度访问它有任何其他建议吗?谢谢! 最佳答案 officialdocumentation声明索引类型未指定,但查看repository,可以看到最有可能的定义是typedefstd::ptrdiff_tindex;因此,如果您为x8632位系统编译,无论如何您肯定会用完可寻址内存,因此索引大小的限制并不是您的真正